home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 5
/
Aminet 5 - March 1995.iso
/
Aminet
/
util
/
libs
/
type1beta5.lha
/
type1
/
src
/
util.c
< prev
Wrap
C/C++ Source or Header
|
1994-12-17
|
4KB
|
197 lines
/* $XConsortium: util.c,v 1.6 92/03/26 16:42:26 eswu Exp $ */
/* Copyright International Business Machines,Corp. 1991
* All Rights Reserved
*
* License to use, copy, modify, and distribute this software
* and its documentation for any purpose and without fee is
* hereby granted, provided that the above copyright notice
* appear in all copies and that both that copyright notice and
* this permission notice appear in supporting documentation,
* and that the name of IBM not be used in advertising or
* publicity pertaining to distribution of the software without
* specific, written prior permission.
*
* IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
* OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
* LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
* PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
* OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
* THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
* THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
* NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
* FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
* CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
* SOFTWARE.
*/
/* Author: Katherine A. Hitchcock IBM Almaden Research Laboratory */
#ifndef T1GST
#include "global.h"
#endif
static char *vm_base = NULL; /* Start of virtual memory area */
char *vm_next = NULL; /* Pointer to first free byte */
long vm_free = 0; /* Count of free bytes */
long vm_size = 0; /* Total size of memory */
/*
* Initialize memory.
*/
boolean vm_init(int cnt)
{
vm_next = vm_base = (char *)xalloc(cnt);
if (vm_base != NULL)
{
vm_free = cnt;
vm_size = cnt;
return (TRUE);
}
else
return (FALSE);
}
/*
* Free memory.
*/
void free_vm(void)
{
if (vm_base != NULL)
xfree(vm_base);
vm_base = NULL;
vm_next = NULL;
vm_free = 0;
vm_size = 0;
}
char *vm_alloc(int bytes)
{
char *answer;
/* Round to next word multiple */
bytes = (bytes + 3) & ~3;
/* Allocate the space, if it is available */
if (bytes <= vm_free)
{
answer = vm_next;
vm_free -= bytes;
vm_next += bytes;
}
else
answer = NULL;
return (answer);
}
/*
* Format an Integer object
*/
void objFormatInteger(psobj *objP, int value)
{
if (objP != NULL)
{
objP->type = OBJ_INTEGER;
objP->len = 0;
objP->data.integer = value;
}
}
/*
* Format a Real object
*/
void objFormatReal(psobj *objP, double value)
{
if (objP != NULL)
{
objP->type = OBJ_REAL;
objP->len = 0;
objP->data.real = value;
}
}
/*
* Format a Boolean object
*/
void objFormatBoolean(psobj *objP, boolean value)
{
if (objP != NULL)
{
objP->type = OBJ_BOOLEAN;
objP->len = 0;
objP->data.boolean = value;
}
}
/*
* Format an Encoding object
*/
void objFormatEncoding(psobj *objP, int length, psobj *valueP)
{
if (objP != NULL)
{
objP->type = OBJ_ENCODING;
objP->len = length;
objP->data.arrayP = valueP;
}
}
/*
* Format an Array object
*/
void objFormatArray(psobj *objP, int length, psobj *valueP)
{
if (objP != NULL)
{
objP->type = OBJ_ARRAY;
objP->len = length;
objP->data.arrayP = valueP;
}
}
/*
* Format a String object
*/
void objFormatString(psobj *objP, int length, char *valueP)
{
if (objP != NULL)
{
objP->type = OBJ_STRING;
objP->len = length;
objP->data.valueP = valueP;
}
}
/*
* Format a Name object
*/
void objFormatName(psobj *objP, int length, char *valueP)
{
if (objP != NULL)
{
objP->type = OBJ_NAME;
objP->len = length;
objP->data.nameP = valueP;
}
}
/*
* Format a File object
*/
void objFormatFile(psobj *objP, F_FILE *valueP)
{
if (objP != NULL)
{
objP->type = OBJ_FILE;
objP->len = 0;
objP->data.fileP = valueP;
}
}